package com.laoli.config;

import com.laoli.job.MyJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 这个文件是在讲解quartz整合springboot时使用的
 * 如果是在使用quartz实现动态调度定时任务时，这个文件就不需要了，而是使用QuartzController类，所以这这个时候需要让这个文件不起作用，其实就是把@Configuration注释掉就可以达到目的。
 */
//@Configuration//spring配置类注解
public class QuartzConfig {
    //任务详情
    @Bean
    public JobDetail jobDetail(){
        return JobBuilder.newJob(MyJob.class)//绑定具体的job类
                .storeDurably() //开启任务持久化
                .withIdentity("job1","group1")  //任务唯一标识，第一个参数是任务名称，第二个参数是任务分组名
                .usingJobData("count",1)        //(共享)数据初始化，这些数据会在任务多次被执行过程中被共享
                .build();
    }
    //触发器
    @Bean
    public Trigger trigger(){
        //cron表达式
        String croExpression = "0/2 * * * * ? *";      //每隔2秒执行一次（时间频率）
        return TriggerBuilder.newTrigger()
                .withIdentity("trigger1","group1")  //触发器唯一标识，第一个参数是触发器名称，第二个参数是触发器分组名
                .forJob(jobDetail())//定义触发器时，要指定为哪个任务详情服务
                .withSchedule(CronScheduleBuilder.cronSchedule(croExpression))     //时间规则:cron表达式
                .build();
    }
}
